1. Field of the Invention
The present invention relates to a test case generating apparatus for generating test cases used to an operation test in a development of products using computers.
2. Description of the Related Art
Most apparatuses used nowadays utilize computers. For example, most of consumer products, traffic means, and apparatuses in factories, power plants, and the like utilize computers. Products in which computers are utilized (applied) will be referred to as applied products using computers hereinafter for the sake of simplicity. As such applied products using computers are intricately related to our everyday life, failures of the applied products using computers influence the society very largely, and hence, requirements for the reliability of the applied products using computers are becoming increasingly severe.
In order to assure the reliability of the applied products using computers, test phases are important. Operations of all items such as functional specifications, performance specifications to be satisfied by a given product must be actually confirmed, and if a failure is found, the failure must be corrected to guarantee the normal operations of the product in every situation. Therefore, a question associated with the kind and the number of times of tests (a format which defines the method, the number of times (quantities), and the like of tests will be referred to as a "test case" hereinafter) is very important upon assurance of the reliability of products. In order to assure the reliability of products by conducting tests within limited ranges of time lengths and work amounts, it is indispensable to make efficient test cases.
In conventional testing, a check-list as a table of functions and performances to be satisfied by a given product is used as test cases, and testers confirms check items one by one by hand operations, thereby assuring the reliability of the product. In this case, the check-list is effective in terms of confirmation of product operations. However, it is not definite how efficiently the check-list actually covers possible operations of the product. In general, it is very difficult even for experts to realize, as a check-list, test cases which cover all possible operations of the product and can confirm them. Therefore, in conventional tests, a skilled engineer confirms possible operations within a limited period of time on the basis of his or her own product knowledge and experiences. However, with the recent trends of complicated, large-scale applied products using computers, it is becoming difficult even for experts to assure the reliability of products by the above-mentioned method depending on their experiences and sixth senses.
In tests by a hand method, sensor inputs and the like to a product must be generated using some devices (e.g., a variable resistor, and the like). However, with this method, it is not easy to practically guarantee if an input to a test object is an input for a required test. Furthermore, in tests by a hand method, it is very troublesome to set test conditions corresponding to test cases by generating input signals one by one. Therefore, in the conventional tests, a large number of steps are required in testing or the number of test cases that can be done within a limited period of time is limited. As a result, the productivity and/or quality of products may be adversely influenced.
As described above, in the conventional test method, it is very difficult to sufficiently guarantee the reliability of applied products using computers.
On the other hand, a method using means for generating test inputs that can cover modules constituting a program by analyzing the architecture of the program installed in an applied product using a computer as an object to be tested, has been proposed. However, this method can only be applied to, at most, a unit test for a program module in consideration of the complexity and scale of the program, and cannot be used in integration tests and system tests of the product.
In some product fields, attempts have been made to formally describe the specifications of products and to generate test cases on the basis of the specification description. For example, in the fields of electronic circuits, communication protocols, and the like, a method of describing specifications using a state transition diagram, and automatically generating test cases which can execute all possible operations described in the specifications has been proposed. U.S. Pat. No. 4,962,921 is an example of such a method. However, even with this method, with the complicated, large-scale product specifications, it is difficult to describe all the specifications of a given product using one state transition diagram. For this reason, it is impossible to automatically generate test cases even by this method.
As described above, it is very difficult to generate test cases which can cover all possible operations of a program, and can sufficiently assure the reliability of a given applied product using a computer.
In tests using a check-list, the adequacy of the tests is determined by test cases in the list. The test cases require much labor since it must be manually generated with reference to the specification of a product. Since test cases largely depend on the original specification, it is very difficult to generate a sufficiently reliable check-list (test cases) based on the existing specification using a natural language due to its ambiguity.
Upon generation of test cases based on the formal specification description, which is proposed to solve the above-mentioned problems, it is difficult to describe the specifications themselves and to generate test cases without omissions as the specifications themselves have a larger scale and are complicated.